package com.wzdigit.wms.basic.domain.dtos.outbound;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 * 拣货任务明细
 * </p>
 *
 * @author
 * @since 2021-02-25
 */
@Data
@EqualsAndHashCode
@Accessors(chain = true)
public class PicktaskDto implements Serializable, Comparable<PicktaskDto> {

    private static final long serialVersionUID = 1L;

    /**
     * 拣货任务ID
     */
    @ApiModelProperty(value = "拣货任务ID")
    private Integer picktaskHeaderId;

    /**
     * 拣货任务号
     */
    @ApiModelProperty(value = "拣货任务号")
    private String picktaskNo;

    /**
     * 波次号
     */
    @ApiModelProperty(value = "波次号")
    private String waveNo;

    /**
     * 拣货顺序
     */
    @ApiModelProperty(value = "拣货顺序")
    private Integer pickSeq;

    /**
     * 仓库
     */
    @ApiModelProperty(value = "仓库")
    private Integer whsId;

    /**
     * 仓库描述
     */
    @ApiModelProperty(value = "仓库描述")
    private String whsDesc;

    /**
     * 库区
     */
    @ApiModelProperty(value = "库区")
    private Integer zoonId;

    /**
     * 库区描述
     */
    @ApiModelProperty(value = "库区描述")
    private String zoonDesc;

    /**
     * 用户自定义字段1
     */
    @ApiModelProperty(value = "用户自定义字段1")
    private String udf1;

    /**
     * 用户自定义字段2
     */
    @ApiModelProperty(value = "用户自定义字段2")
    private String udf2;

    /**
     * 用户自定义字段3
     */
    @ApiModelProperty(value = "用户自定义字段3")
    private String udf3;

    /**
     * 用户自定义字段4
     */
    @ApiModelProperty(value = "用户自定义字段4")
    private String udf4;

    /**
     * 用户自定义字段5
     */
    @ApiModelProperty(value = "用户自定义字段5")
    private String udf5;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    private String comments;

    /**
     * 状态
     */
    @ApiModelProperty(value = "状态")
    private Integer status;

    /**
     * 状态描述
     */
    @ApiModelProperty(value = "状态描述")
    private String statusDesc;


    /**
     * 拣货类型
     */
    @ApiModelProperty(value = "拣货类型")
    private Integer taskType;

    /**
     * 拣货类型
     */
    @ApiModelProperty(value = "拣货类型描述")
    private String taskTypeDesc;

    //DTL ↓↓↓↓↓↓↓↓↓
    /**
     * 任务领取人
     */
    @ApiModelProperty(value = "任务领取人")
    private String taskReceiver;

    /**
     * 任务执行人
     */
    @ApiModelProperty(value = "任务执行人")
    private String taskExecutor;

    /**
     * 开始拣货时间
     */
    @ApiModelProperty(value = "开始拣货时间")
    private Date beginPickTime;

    /**
     * 结束拣货时间
     */
    @ApiModelProperty(value = "结束拣货时间")
    private Date endPickTime;

    /**
     * 计划拣货数量:【任务数量】=【计划拣货数量】
     */
    @ApiModelProperty(value = "任务数量")
    private Integer planQty;

    /**
     * 实际拣货数量
     */
    @ApiModelProperty(value = "实际拣货数量")
    private Integer cmpQty;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    private Date createTime;

    /**
     * 拣货任务明细ID
     */
    @ApiModelProperty(value = "拣货任务明细ID")
    private Integer picktaskDtlId;

    /**
     * 【待检数量】=【计划拣货数量】-【实际拣货数量】
     */
    @ApiModelProperty(value = "待检数量")
    private Integer waitCheckQty;


    @Override
    public int compareTo(PicktaskDto o) {

        if (this.createTime.getTime() < o.createTime.getTime()) {
            return -1;
        } else if (this.createTime.getTime() > o.createTime.getTime()) {
            return 1;
        } else {
            return 0;
        }
    }
}
